package com.czk.model.template.practice;

/**
 * 雪糕的制作
 * @Author:ChenZhangKun
 * @Date: 2020/8/12 23:23
 */
public abstract class IceCream {
    protected boolean isAddSeason=true;
    /**
     * 制作雪糕步骤->模板方法
     * 固定为一个模板
     */
    public void make(){
        // 首先加牛奶
        addMilk();
        // 是否需要添加调料
        if (isAddSeason){
            addSeason();
        }
        // 加木棍
        addCrabStick();
        // 加包装
        addPackage();
    }

    /**
     * 添加调料，用户自己实现
     */
    public abstract void addSeason();

    /**
     * 添加奶油
     */
    public void addMilk(){
        System.out.println("加奶油");
    }

    /**
     * 加木棍
     */
    public void addCrabStick(){
        System.out.println("加木棍");
    }

    /**
     * 加包装
     */
    public void addPackage(){
        System.out.println("加包装");
    }

    /**
     * 留给用户实现，是否愿意添加调料
     */
    public void isWantedAddSeason(){}
}
